package com.haiwei.poi.common.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则工具类
 * @author karry@haiwei.com
 *
 */
public class HaiweiRegexUtil {
	
	private HaiweiRegexUtil(){}
	
	/**
	 * 将URL转换为正则表达式
	 * @param regex
	 * @return
	 */
	private static String replace(String regex){
		char[] chs = regex.toCharArray();
		if(chs != null && chs.length > 0){
			boolean f1 = false;
			boolean f2 = false;
			StringBuilder sb = new StringBuilder();
			for(char c:chs){
				f1 = c == '{';
				if(f1){
					sb.append("[\\s|\\S]+");
					f2 = true;
				}else if(!f2){
					sb.append(c);
				}

				f1 = c != '}';
			}
			return sb.toString();
		}

		return "";
	}

	/**
	 * 匹配
	 * eg: match("/user/{ab}","/user/12312313") --> true
	 * eg: match("/user/ab","/user/12312313") --> false
	 * @param regex
	 * @param input
	 * @return
	 */
	public static boolean match(String regex,String input){
		// 将/user/{ab} --> /user/[\\s|\\S]+
		regex = replace(regex);
		// 首先要编译正则规则形式
		Pattern p = Pattern.compile(regex);
		// 将正则进行匹配
		Matcher m = p.matcher(input);
		// 进行判断
		return m.matches();
	}

}
